/******************************************************************
编程环境：----------
        软件:Arduino2.3.4
        硬件:Mega2560主控板, Mega2560扩展版,3s电池盒，锂电池*3
             超声波传感器*1, Windows11操作系统电脑，方口USB数据线*1
             四麦克纳姆轮小车
        库函数:<Arduino.h>, <uni_motor.h>

实验目的：-----------
        1.了解使用PS2手柄；
        2.搭建手柄遥控小车程序流程框架。

操作流程：----------
        详细请看操作视频.

实验现象：-----------
        机器人通过手柄控制小车前进，后退，左转，右转，左平移，右平移.

实验接线简略图：----------
    ￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣
    电池仓         mega2560扩展版          PS2手柄            车轮
    12V母座~~~~~~~~~板载供电口1                
                      5V  -----------------5V
                      GND -----------------GND
                      52 -----------------PS2_DAT
                      51 -----------------PS2_CMD
                      53 -----------------PS2_SEL
                      50 -----------------PS2_CLK
                      M1  ................................小车左前轮
                      M2  ................................小车右前轮
                      M3  ................................小车左后轮
                      M4  ................................小车右后轮·
    ￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣￣
2024.12.19 Uni Tongchuang Intelligent Robot Technology CO.,Ltd
*******************************************************************/
#include"uni_motor.h" //调用编码电机库
#include<PS2X_lib.h>
#define RATE 115200   //定义串口波特率

//电机参数部分-----------------------------------------------
/*枚举小车状态FORWARD:前进  BACK:后退  LEFT:左转  RIGHT:右转
TRANS_LEFT 左平移     TRANS_RIGHT 右平移   STOP:小车停止 */
enum{FORWARD=1,BACK,LEFT,RIGHT,TRANS_LEFT,TRANS_RIGHT, STOP};
//设定电机参数部分
#define motor_speed_lf 100
#define motor_speed_rf 100
#define motor_speed_lb 100
#define motor_speed_rb 100
UNI_MOTOR motor1(1, true);  //声明小车左前轮
UNI_MOTOR motor2(2, true);  //声明小车右前轮
UNI_MOTOR motor3(3, true);  //声明小车左后轮
UNI_MOTOR motor4(4, true);  //声明小车右后轮

//程序初始化部分
void setup() {
  delay(2500); //程序开机等待
  Serial.begin(RATE);//打开串口
  motor_init();//编码电机引脚初始化
  ps2_init();  //手柄初始化
}

//程序主循环部分
void loop() {
  car_go();
}

